Работа с мышью и клавиатурой
Работа с мышью
задача:
При нажатии кнопки возникает в случайном месте экрана и тут же исчезает маленькая окружность. Вы должны поточнее щелкнуть мышкой там, где она была. После щелчка компьютер сообщает вам, на каком расстоянии от центра окружности было острие мышиного курсора во время щелчка.
Для создания программы нам необходимо поближе познакомиться с событиями, возникающими при работе с мышью.
Поскольку щелкать мышью мы будем над формой, то в левой части Object Browser выберем объект Form. В правой части отыщем события, связанные с мышью. Нас пока интересует 5 событий: Click (щелчок), DblClick (двойной щелчок), MouseDown (нажали клавишу мыши), MouseUp (отпустили клавишу мыши), MouseMove (сдвинули мышь).
События Click и DblClick нам не подойдут, так как они ничего не говорят о координатах мыши во время щелчка.
А вот MouseDown подойдет, так как координаты сообщает.
События MouseDown и MouseUp
Зайдем в окно кода и выберем для объекта Form событие MouseDown.
В окне кода появится следующая заготовка:
Private Sub Form_MouseDown (Button As Integer, Shift As Integer, _
X As Single, Y As Single)
End Sub
Четыре параметра в скобках - это 4 вещи, которые компьютер сообщает процедуре в момент события:
• Button - какая из трех кнопок мыши была нажата;
• Shift - были ли при этом в нажатом состоянии служебные клавиши на клавиатуре и какие именно;
X, Y - координаты острия курсора мыши во время нажатия.
Для того чтобы понять и проверить смысл этих параметров, прочтите (чтобы понять) и запустите (чтобы проверить) такую программу:
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
'Определяем, какая клавиша мыши нажата: Select Case Button
Case 1: Print "Нажата левая клавиша"
Case 2: Print "Нажата правая клавиша"
Case 4: Print "Нажата средняя клавиша" End Select
'Определяем, какие из трех клавиш клавиатуры (Shift, Ctrl, Alt) были при этом
'в нажатом состоянии: Select Case Shift
Case 0: Print "He нажата ни одна клавиша Shift, Ctrl, Alt"
Case 1: Print "Нажата клавиша Shift"
Case 2: Print "Нажата клавиша Ctrl"
Case 3: Print "Нажаты клавиши Shift, Ctrl"
Case 4: Print "Нажата клавиша Alt"
Case 5: Print "Нажаты клавиши Shift, Alt"
Case 6: , Print "Нажаты клавиши Ctrl, Alt"
Case 7: Print "Нажаты клавиши Shift, Ctrl, Alt" End Select
'Определяем координаты острия курсора мыши во время нажатия:
Print "X="; X, "Y="; Y
End Sub
В численном значении Shift есть система. (Не путайте переменную Shift с клавишей Shift.) Посмотрите в процедуре, чему "равны" клавиши Shift, Ctrl, Alt поодиночке.
Одному, двум и четырем. Так вот, их совместное нажатие "равно" их сумме. Убедитесь .
Поместите на форму несколько разных объектов.
Обратите внимание, что при щелчке по ним процедура не срабатывает.
Это естественно: у каждого объекта есть свое событие MouseDown. Событие MouseUp работает аналогично.
Мышь рисует: